package com.gxa.saas.core.config;




import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;

public class mysqlGenerator {

    @Test
    public void generator() {
        AutoGenerator mpg = new AutoGenerator();
        //1、全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath + "/src/main/java/");  //生成路径(一般都是生成在此项目的src/main/java下面)
        gc.setAuthor("wu"); //设置作者
        gc.setOpen(false);
        gc.setFileOverride(true);
       // gc.setServiceName("%sService");
        //gc.setBaseResultMap(true); //生成resultMap
        mpg.setGlobalConfig(gc);

        //2、数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://127.0.0.1:3306/saas?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("123456");
        mpg.setDataSource(dsc);

        // 3、包配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName("");
        pc.setParent("com.gxa.saas.core");
        //这里是分别指定生成文件位置
//        pc.setEntity("sys.entity");
//        pc.setMapper("sys.dao");
//        pc.setXml("sys.dao.mappers");
//        pc.setServiceImpl("sys.service");
//        pc.setController("sys.web");
        mpg.setPackageInfo(pc);

        // 4、策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//        strategy.setSuperControllerClass("com.lm.test.controller.BaseController");
//        strategy.setSuperEntityClass("com.lm.test.entity.BaseEntity");
        // strategy.setTablePrefix("t_"); // 表名前缀
        strategy.setEntityLombokModel(true); //使用lombok
        strategy.setInclude("first_classify","second_classify","product");// 这里是将需要生成代码的表放进去
        mpg.setStrategy(strategy);

        //生成的xml会在java目录下，我们自己只需要剪切粘贴一下就可以了


        //5、执行
        mpg.execute();

    }
}

